/*
 * pruebasEstaticos.h
 *
 *  Created on: 13/10/2011
 *      Author: pablo
 */

#ifndef PRUEBASESTATICOS_H_
#define PRUEBASESTATICOS_H_

void pruebaConfiguracionAltasEstaticos() {
    std::cout << "----Pruebas Altas tipos estaticos----" << std::endl;
	Configuracion conf;
    TipoEstatico *tipoEstatico1 = new TipoEstatico();
    tipoEstatico1->setExtension("html");
    tipoEstatico1->setContenido("text/html");
    TipoEstatico *tipoEstatico2 = new TipoEstatico();
    tipoEstatico2->setExtension("html");
    tipoEstatico2->setContenido("falso");

    if(conf.agregarTipoEstatico(tipoEstatico1)) {
    	if(conf.getTipoEstatico("html") == "text/html") {
    		std::cout << "ALTA OK" << std::endl;
    	} else {
    		std::cout << "ALTA ERROR: no esta agregado" << std::endl;
    	}
    } else {
        std::cout << "ALTA ERROR: no se puede agregar uno que no existia" << std::endl;
    }

    if(conf.agregarTipoEstatico(tipoEstatico2)) {
    		std::cout << "ALTA ERROR: repetido" << std::endl;
    } else {
    	if(conf.getTipoEstatico("html") == "text/html") {
    	    std::cout << "ALTA OK" << std::endl;
    	} else {
    		std::cout << "ALTA ERROR" << std::endl;
    	}
    }
    std::cout << "----FIN Pruebas Altas tipos estaticos----" << std::endl;
}

void pruebaRemoverEstatico() {
    std::cout << "---- Prueba remover estatico ----" << std::endl;

    Configuracion conf;
    TipoEstatico *tipo1 = new TipoEstatico();
    tipo1->setExtension("ext1");
    tipo1->setContenido("contenido");
    conf.agregarTipoEstatico(tipo1);

    if(conf.removerTipoEstatico("ext1")){
        if(conf.getTipoEstatico("ext1") == "")
            std::cout << "REMOVER OK" << std::endl;
        else
            std::cout << "REMOVER ERROR" << std::endl;

    } else {
        std::cout << "REMOVER ERROR" << std::endl;
    }

    if(conf.removerTipoEstatico("invalido")) {
        std::cout << "REMOVER ERROR" << std::endl;
    } else {
        if(conf.getTipoEstatico("invalido") == "")
            std::cout << "REMOVER OK" << std::endl;

        else
            std::cout << "REMOVER ERROR" << std::endl;
    }

    std::cout << "----FIN  Prueba remover estatico ----" << std::endl;
}

void pruebaRecuperacionListaEstaticos() {
	std::cout << "----- PRUEBA getListaEstaticos--------" << std::endl;
    Configuracion c;
    TipoEstatico *dinamico1 = new TipoEstatico();
    dinamico1->setExtension("ext1");
    dinamico1->setContenido("contenido1");
    TipoEstatico *dinamico2 = new TipoEstatico();
    dinamico2->setExtension("ext2");
    dinamico2->setContenido("contenido2");
    c.agregarTipoEstatico(dinamico1);
    c.agregarTipoEstatico(dinamico2);
    std::list<TipoEstatico> l = c.getTiposEstaticos();
    std::list<TipoEstatico>::iterator it;
    for(it = l.begin();it != l.end();it++){
        if(it->getExtension() == "ext1"){
            if(it->getContenido() == "contenido1")
                std::cout << "Recuperacion estatico 1 Ok" << std::endl;
            else
                std::cout << "Recuperacion estatico 1 Error" << std::endl;

        }else
            if(it->getExtension() == "ext2"){
                if(it->getContenido() == "contenido2")
                    std::cout << "Recuperacion estatico 2 Ok" << std::endl;

                else
                    std::cout << "Recuperacion estatico 2 Error" << std::endl;

            }else{
                std::cout << "ERROR DE RECUPERACION DE LISTA" << std::endl;
            }
    }
    std::cout << "----- FIN PRUEBA getListaEstaticos--------" << std::endl;
}

void pruebaEstaticos() {
	std::cout << "-------- PRUEBA ESTATICOS --------" << std::endl;
    pruebaConfiguracionAltasEstaticos();
    std::cout << std::endl;
    pruebaRemoverEstatico();
    std::cout << std::endl;
    pruebaRecuperacionListaEstaticos();
    std::cout << std::endl;
    std::cout << "-------- FIN PRUEBA ESTATICOS --------" << std::endl;
    std::cout << std::endl;
}

#endif /* PRUEBASESTATICOS_H_ */
